﻿using System;
namespace Producers.Arireg.Xtee.Riik.Ee.Producer.Arireg {
    
    
    public class XOigvorm : global::Xtee.Core.Schema.XsdString {
        
        public const string AKTSIASELTS = "AS";
        
        public const string FÜÜSILISESTISIKUSTETTEVÕTJA = "FIE";
        
        public const string MITTETULUNDUSÜHING = "MTÜ";
        
        public const string TULUNDUSÜHISTU = "HÜ";
        
        public const string OSAÜHING = "OÜ";
        
        public const string SIHTASUTUS = "SA";
        
        public const string TÄISÜHING = "TÜ";
        
        public const string USALDUSÜHING = "UÜ";
        
        public const string VÄLISMAAÄRIÜHINGUFILIAAL = "FA";
        
        public const string EUROOPAMAJANDUSHUVIÜHING = "EMÜ";
        
        public const string EUROOPAÄRIÜHING = "SE";
        
        public XOigvorm(string value) : 
                base(value) {
            this.Validate();
            string annot = null;
            if (Value == "AS") {
                annot = "Aktsiaselts";
            }
            if (Value == "FIE") {
                annot = "Füüsilisest isikust ettevõtja";
            }
            if (Value == "MTÜ") {
                annot = "Mittetulundusühing";
            }
            if (Value == "HÜ") {
                annot = "Tulundusühistu";
            }
            if (Value == "OÜ") {
                annot = "Osaühing";
            }
            if (Value == "SA") {
                annot = "Sihtasutus";
            }
            if (Value == "TÜH") {
                annot = "Tulundusühistu";
            }
            if (Value == "TÜ") {
                annot = "Täisühing";
            }
            if (Value == "UÜ") {
                annot = "Usaldusühing";
            }
            if (Value == "FA") {
                annot = "Välismaa äriühingu filiaal";
            }
            if (Value == "FB") {
                annot = "Välismaa äriühingu filiaal";
            }
            if (Value == "EMÜ") {
                annot = "Euroopa majandushuviühing";
            }
            if (Value == "SE") {
                annot = "Euroopa äriühing";
            }
            if (annot!=null) {
                this._annotation = annot;
            }
            else {
                throw new global::Xtee.Core.Types.XteeSimpleTypeValidationException(string.Format("Enumeration on [{0}] does not allow value : [{1}] ", this.GetType().Name,Value.ToString()));;
            }
        }
        
        public XOigvorm() : 
                base(string.Empty) {
        }
        
        public static bool TryParse(string value, out global::Producers.Arireg.Xtee.Riik.Ee.Producer.Arireg.XOigvorm result) {
            try {
                result = new global::Producers.Arireg.Xtee.Riik.Ee.Producer.Arireg.XOigvorm(value);
                return true;
            }
            catch (System.Exception ) {
                result = null;
                return false;
            }
        }
        
        public static implicit operator String (XOigvorm value) {
            return value.Value;
        }
        
        public static implicit operator XOigvorm (string value) {
            if (value==null) {
                return null;
            }
            return new XOigvorm(value);
        }
    }
}
